//+build wireinject
package main

import (
	"fmt"
	"github.com/google/wire"
	_ "github.com/google/wire"
)
type Monster struct {
	Name string
}

type Player struct{
	Name string
}

type Mission struct{
	Player Player
	Monster Monster
}

func NewMonster() Monster{
	return Monster{Name: "Kitty"}
}
func NewPlayer(name string) Player{
	return Player{Name: name}
}
func NewMission(p Player, m Monster) Mission{
	return Mission{p, m}
}
func (m Mission) Start(){
	fmt.Printf("%s defeats %s", m.Player.Name, m.Monster.Name)
}

func InitMission(name string) Mission{
	wire.Build(NewMonster, NewPlayer, NewMission)
	return Mission{}
}
